<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>


    <script>
    
        function fun () {
            console.log('函数方法');
        }

        // var fun = 10;
        // fun(); //报错： fun is not a function
        // js 中，如果代码报错 那么后面的代码将不再继续执行，

        // 需求： 希望代码出错之后， 后面的代码还能继续执行，



        /***********************
        代码的异常处理
        */ 
        // var str= 'zifuchuan'；语法错误
        // 异常处理 是 处理非语法的错误

        /*
        格式： 
            try {

            } catch (e) {

            }
        */ 
        try {
            var fun = 10;
            fun();
            // 将可能出错的 代码 放置到 异常处理 代码块中 
            // 如果出现错误 就会进入 catch (e) 代码块 e表示 error 信息；
            // catch (e) 代码块可以 处理 出错问题， 
            // 将可能出错的代码放置到 异常处理代码块 中 可以不影响后面 代码的执行
        } catch (e) {
            console.log(e);
        }

        console.log('程序没有问题');
    

    

    /***************** 自定义异常信息 *********/ 

    try {
        function fun2 (name) {
            if (name == undefined) {
                // 自定义异常信息
                // 通过 throw 关键字 返回异常信息 ， 返回异常信息之后的代码不在执行， 会执行 catch 中的代码
                throw {errMag: '未传参数', code: 10003};
            }
            console.log(name);
        }

        fun2()
    } catch (e) {
        console.log(e.errMag);
        
    } finally {
        // 你不管是否出错 都会执行 这里的代码， 这里可以释放一些资源 在后端开发使用比较多 （Node.js）

    }

    console.log('fun2 执行之后');
    
    
    </script>
    
</body>
</html>